//
//  ViewController.swift
//  SLDatabase
//
//  Created by 姚胜龙 on 2017/7/3.
//  Copyright © 2017年 姚胜龙. All rights reserved.
//

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        //处理异常
        do {
            //执行SQL语句
            let dbPath = Bundle.main.path(forResource: "test", ofType: "db")
            print(dbPath!)

            let connection = try DBConnection(dbPath!)
            print(connection.readonly)
//            try connection.execute("create table t_user(user_name text, user_sex text)")
//
//            let statement = try connection.runSQL("insert into t_user(user_name, user_sex) values (?,?)", "男","YSL")
//            print(statement.description)

//            let expression = Expression<Int>("id",[])
//            print("字段:\(expression.template)")
//            let table = Table("t_user", nil)
//            print("表名:\(table.manager.from)")

            //创建表测试
//            let table = Table("t_ysl")
//            let user_id = Expression<Int>("t_user_id",[])
//            let user_name = Expression<String>("user_name", [])
//            let sql = table.create({ (builder) in
//                builder.column(user_id).column(user_name)
//            })
//            try connection.runSQL(sql)

        } catch  {
            print("出现异常了\(error)")
        }
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()

    }


}

/*
 第一点：角色划分？
    抽象产品：Expressible（高度抽象）
    抽象产品：
        ExpressionType（字段类型）
        QueryType（操作类型）
        Binding（值类型）
    具体的产品：
        Expression（表字段）
        Value（表字段对应值）
    抽象构建者：IBuilder（可以忽略）
            忽略
    具体构建者合并：TableBuilder
        构建字段（组装字段）

 统一组装类：Table
    构建表语句：SQL
 整个数据库框架设计：基于构建者模式进行设计扩展

 */


